﻿<Serializable()>
Public Class Milestone
    Implements ICloneable

    Private SpecialIDValue As SpecialIDValues
    Private NameValue As String = "Milestone"
    Private pMilestoneDate As Date = #1/1/2010#
    Private pMilestoneRealDate As Date = #1/1/2010#
    Private pRemark As String = ""
    Private EditableValue As Boolean = True
    Private ShowInPlanValue As Boolean = True
    Public Event DateChanged(ByVal sender As L3DObjectsLibrary.Milestone)
    Enum SpecialIDValues As Integer
        None = 0
        Start = 2
        DAP = 3
        SOP = 4
        VP = 5
        PS = 6
    End Enum
    Public Structure MilestoneTiming
        Dim Plan As Date
        Dim RePlan As Date
    End Structure
    Public Property ShowInPlan As Boolean
        Get
            Return ShowInPlanValue
        End Get
        Set(ByVal value As Boolean)
            ShowInPlanValue = value
        End Set
    End Property
    Public Property Editable As Boolean
        Get
            Return EditableValue
        End Get
        Set(ByVal value As Boolean)
            EditableValue = value
        End Set
    End Property
    Public Overloads Property Name As String
        Get
            Return NameValue
        End Get
        Set(ByVal value As String)
            NameValue = value
        End Set
    End Property
    Public Property MilestoneDate As Date
        Get
            Return pMilestoneDate
        End Get
        Set(ByVal value As Date)
            pMilestoneDate = value
            RaiseEvent DateChanged(Me)
        End Set
    End Property
    Public Property MilestoneRealDate As Date
        Get
            Return pMilestoneRealDate
        End Get
        Set(ByVal value As Date)
            pMilestoneRealDate = value
        End Set
    End Property
    Public Property Remark
        Get
            Return pRemark
        End Get
        Set(ByVal value)
            pRemark = value
        End Set
    End Property
    Public Property SpecialID As SpecialIDValues
        Get
            Return SpecialIDValue
        End Get
        Set(ByVal value As SpecialIDValues)
            SpecialIDValue = value
        End Set
    End Property
    Public Function Clone() As Object Implements ICloneable.Clone
        Return ObjManagement.GeneralFunctions.CloneObject(Me)
    End Function

End Class
